iT邦幫忙

0

用合法動作掩飾非法行為,這4種業務邏輯安全漏洞,穿過保護機制套利提權

  • 分享至 

  • xImage
  •  

業務邏輯漏洞是應用程式設計和實作中常見的缺陷,允許攻擊者引發意外行為。 這可能使攻擊者能夠操縱合法功能來實現惡意目標。 識別它們通常需要一定程度的人類知識,例如了解業務領域或攻擊者在給定上下文中可能有什麼目標。 這使得使用自動漏洞掃描器很難檢測到它們。 因此,Business Logic Vulnerabilities(業務邏輯漏洞)通常是錯誤賞金獵人和手動測試人員的重要目標。

邏輯漏洞的產生,是因為設計和開發團隊對使用者如何與應用程式互動做出了有缺陷的假設。常見的問題如下:

  • 輸入範圍處理不當:例如正負範圍未處理,數字邊界處理不當, 對異常輸入的處理不一致
  • 過度信任使用者操作:例如未檢查使用者輸入
  • 使用者不會總是遵循預期的順序:例如在特定流程輸入的合理性未驗證, 端點未隔離, 沒有完整的流程檢查, 可以跳過流程的檢查點
  • 特定於業務領域的邏輯缺陷:例如未檢查業務狀態, 利用業務規則套利

輸入範圍處理不當

在這輸入範圍處理不當的類型中,常見的手法有以下幾種

  • 正負範圍未處理
  • 數字邊界處理不當
  • 對異常輸入的處理不一致

正負範圍未處理

送出請求時將購買數改成負數,導致買越多商品越便宜

舉例如下
某一網站選擇商品放入購物車時,輸入負金額網站不會阻擋,
因此可以先選擇商品,並將數量改成負數後放入購物車,如下

POST /cart HTTP/2
...omit...
product=2&redir=PRODUCT&quantity=-10&price=1337

在結帳頁面會發現結帳金額變負,但因為是負金額無法結帳
因此要在選擇其他商品放入購物車,一直到結帳金額變成正數,就可以正常結帳

數字邊界處理不當

故意買很多商品,讓結帳金額突破正數上限值而轉成負數

舉例如下
某一網站購物車結帳時,金額超過2,147,483,647會變成-2,147,483,647
所以先選擇商品並將數量設定99後放入購物車,在把以下請求傳到burp intruder,選擇null payloads後設定Continue indefinitely發動攻擊

POST /cart HTTP/2
...omit...
product=1&redir=PRODUCT&quantity=99&price=1337

當攻擊正在進行時,刷新頁面監控總價,一但總價超過2,147,483,647就會變成-2,147,483,648,然後慢慢接近0
一旦快接近0就可以停止攻擊,並搭配選擇其他商品讓總價維持在0-100之間

對異常輸入的處理不一致

利用輸入長度截段特性,偽造特定帳號

舉例如下
某一網站在註冊帳號時,系統會把用@dontwannacry.com信箱註冊的帳號當做admin,而且只支持255個字元
所以先設計一個@dontwannacry.com域名的email帳號,長度要255字元如下

attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234verylongstringverylongstringverylongst@dontwannacry.com

在設計一個包含dontwannacry.com字符串的email域名,並加入其中,如下

attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234verylongstringverylongstringverylongst@dontwannacry.com.ac881fc51ee252ee80936d82019b0090.web-security-academy.net

確認該域名@dontwannacry.com.ac881fc51ee252ee80936d82019b0090.web-security-academy.net能收到信後,用這個email註冊,收到信點擊確認鏈結後,註冊成功並登入

但因為網站在登入註冊的邏輯上有問題,當帳戶超過255個字會被截段,因此網站會誤認為是用以下的@dontwannacry.com當做註冊帳號

attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234attack1234verylongstringverylongstringverylongst@dontwannacry.com

由於系統會把用@dontwannacry.com信箱註冊的帳號當做admin,因此成功獲得管理者權限


其他三種類型的業務邏輯漏洞,可參考業務邏輯漏洞 https://systw.net/note/archives/1516


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言